// 生产环境webpack配置文件
const path = require("path");
// 自动生成html 文件的 plugin
const HtmlWebpackPlugin = require("html-webpack-plugin");
// 自动清理打包之后的目录
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
// 复制不打包的 文件plugin
const CopyWebpackPlugin = require("copy-webpack-plugin");
module.exports = {
    // 模式
    mode: "production",
    // 入口配置
    entry: path.resolve(__dirname, "../src/index.js"),
    // 出口配置
    output: {
        path: path.resolve(__dirname, "../dist"),
        filename: "[name].js",
        publicPath: '/'
    },
    resolve: {
        alias: {
            // 路径别名设置
            "@": path.resolve(process.cwd(), "src/views")
        }
    },
    module: {
        rules: [{
            // 配置使用 html loader
            test: /\.html$/i,
            loader: "html-loader",
        },
        {
            test: /\.ejs$/,
            loader: 'ejs-loader',
            options: {
                variable: 'data', // 可以在模块当中使用data进行数据处理
            }
        }],
    },
    // plugin 配置
    plugins: [
        // 自动生成模板的HTML
        new HtmlWebpackPlugin({
            title: "admin",
            filename: "index.html",
            template: "./public/index.html"
        }),
        new CleanWebpackPlugin(),  //自动清除打包中的文件
        new CopyWebpackPlugin({    //复制不需要进行编译文件
            patterns: [{
                from: "public",  // 需要复制的目录路径
                to: "./", // 打包之后的路径
                globOptions: {
                    ignore: ["**/index.html"] // 排除index.html
                }
            },
            {
                from: "./src/static",
                to: "./"
            }]
        })
    ]
}